Después de actualizar la versión de React Native a la última versión 0.63.2 e intentar cargar la imagen en el depósito S3, XHR devuelve un error. La carga de la imagen Stream Closed funcionó bien con la versión 0.61.5.
El código
uploadProfile({ variables: { filetype: mime } }).then( ({ data: { uploadUserProfile } }) => { const { presignedUrl, url } = uploadUserProfile; console.log('presignedUrl', { presignedUrl, url }); // uploading to s3 bucket const xhr = new XMLHttpRequest(); xhr.open('PUT', presignedUrl); xhr.onreadystatechange = async function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { updateAccount({ variables: { data: { profile: url, }, }, }); } else { if (/Request has expired/g.test(xhr.response)) Toast({ message: 'slow network connection' }); else { console.log({ response: xhr.response, responseText: xhr.responseText, status: xhr.status, }); Toast({ message: 'internal server error' }); await report({ error: { response: xhr.response, responseText: xhr.responseText, status: xhr.status, }, }); // reporting error } } } }; xhr.setRequestHeader('Content-Type', mime); xhr.send({ uri: path, type: mime }); setLoading(false); }, );Cuando el usuario quiere cargar una imagen de perfil, la primera aplicación envía una solicitud al servidor y obtiene la URL prefirmada y la carga desde el lado del cliente, así es como funcionaba la aplicación.
Actualicé Flipper a la versión 0.51.2 y me funcionó.
Vaya a android/gradle.properties y agregue esta línea
FLIPPER_VERSION=0.52.1 Deberías tener las siguientes líneas en tu android/app/build.gradle
dependencies { // .... debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { exclude group:'com.facebook.fbjni' } debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { exclude group:'com.facebook.flipper' } debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { exclude group:'com.facebook.flipper' } // ... }la actualización de la versión de flipper me soluciona el problema. Si la actualización de la versión de flipper no lo soluciona, intente esta solución.
Quien todavía está luchando con este problema. está sucediendo debido al complemento de red Flipper. Lo deshabilité y las cosas funcionan bien.
Mi solución para hacer que esto funcione es comentar el esquema número 43
38 NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); 39 NetworkingModule.setCustomClientBuilder( 40 new NetworkingModule.CustomClientBuilder() { 41 @Override 42 public void apply(OkHttpClient.Builder builder) { 43 // builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); 44 } 45 }); 46 client.addPlugin(networkFlipperPlugin); en este archivo android/app/src/debug/java/com/maxyride/app/drivers/ReactNativeFlipper.java
encontré este enlace de respuesta